www.gusucode.com > C++ 使用CMutex 类实现线程同步-源码程序 > C++ 使用CMutex 类实现线程同步-源码程序\code\1.cpp
#include <windows.h> //包含头文件 #include <stdio.h> #include <afxmt.h> //Download by http://www.NewXing.com DWORD WINAPI myfun1( //声明线程函数 LPVOID lpParameter ); DWORD WINAPI myfun2( LPVOID lpParameter ); CCriticalSection m_Sec; //定义全局变量m_Sec int a=0; //定义全局变量a main() { HANDLE h1,h2; //定义线程句柄 h1=::CreateThread(NULL,0,myfun1,NULL,0,NULL); //创建线程1 printf("使用CMutex 类实现线程同步\r\n"); printf("线程1开始运行!\r\n"); h2=::CreateThread(NULL,0,myfun2,NULL,0,NULL); //创建线程2 printf("线程2开始运行!\r\n"); ::Sleep(10000); //程序睡眠10秒 ::CloseHandle(h1); ::CloseHandle(h2); } DWORD WINAPI myfun1(LPVOID lpParameter) //线程函数1 { m_Sec.Lock(); //锁定临界区 a+=1; //变量加1 printf("%d",a); //输出变量 m_Sec.Unlock(); //对临界区进行解锁 return 0; } DWORD WINAPI myfun2(LPVOID lpParameter) //线程函数2 { m_Sec.Lock(); //锁定临界区 a+=1; //变量加1 printf("%d",a); //输出变量 m_Sec.Unlock(); //对临界区进行解锁 return 0; }